home *** CD-ROM | disk | FTP | other *** search
- /* Copyright William Schelter. All rights reserved. (1990) */
-
- #define ATT
- #define U370_AIX
-
- /*
- .. additional piece, which probably belongs in a "README" somewhere, is that
- AIX/370 installers should use the latest (update U401215) C compiler, which
- for some inscrutable reason was hidden when installed ("ls /lib/hc*@" is
- the key to finding it). The symptom for not doing this is that compiling
- some of the generated .c files may take hours rather than seconds (!).
- */
-
- /* Possible change necessary to c/sfasl.c
- mckenney@rpi.edu reports the following change necessary
- for c/sfasl.c. I (wfs) compiled all of scratchpad (800 files)
- and ran many tests without it. I don't have a machine here to
- test on, so I am leaving it out till I get confirmation that it is
- necessary (I hate to mung up c/sfasl.c any more than it is)
-
- *** c/sfasl.c~ Mon Aug 13 21:36:52 1990
- --- c/sfasl.c Fri Dec 14 16:25:57 1990
- ***************
- *** 589,594 ****
- --- 589,599 ----
- if(answ)
- {
- #ifdef COFF
- + #ifdef _AIX370
- + if (NTYPE(sym) == N_UNDEF)
- + sym->n_value = answ->address;
- + else
- + #endif
-
- */
-
- #include "att.h"
- /* #define HAVE_AOUT */
-
- #define EXTERN_N_VALUE_IS_SIZE
-
-
-
- #define ADDITIONAL_FEATURES \
- ADD_FEATURE("U370_AIX"); \
- ADD_FEATURE("AIX");\
- ADD_FEATURE("BUGGY-CC");
-
- /*
- #define USE_C_EXTENDED_DIV
- #define USE_C_EXTENDED_MUL
- */
-
- #undef SET_REAL_MAXPAGE
- #define SET_REAL_MAXPAGE \
- real_maxpage= ulimit(3)/PAGESIZE; \
- if (real_maxpage > MAXPAGE) \
- real_maxpage = MAXPAGE;
-
- #define N_DATADDR(header)
- #define DATA_BEGIN (char *)header.a_dbase
-
-
- /* I don't know why all the bsd versions are subtracting this off
- I thought the header.a_text was the actual size of the text
- not including the header */
-
-
- #define LD_COMMAND(command,main,start,input,ldarg,output) \
- sprintf(command, "ld -d -x -A %s -T %x %s %s -o %s", \
- main,start,input,ldarg,output)
- /* smallest address data can occur */
- #define DBEGIN 0x200000
-
-
- #define SYM_UNDEF_P(sym) (((sym)->n_sclass & N_SECT) == N_UNDF)
-
- /* the section like N_ABS,N_TEXT,.. */
-
- /* #define N_TYPE N_SECT */
-
- /* the header is regared as part of the text */
- #define N_RELOFF(header) A_TRELPOS(header)
-
- #define SYMNMLEN 8
- #define BIG_ENDIAN
-
- #define USE_C_EXTENDED_DIV
- #define USE_C_EXTENDED_MUL
-
-
- /* the beginning of the string table: first long will be size of string
- table */
-
- #define ISCOFF(x) (((x) == I386MAGIC) \
- || ((x) == U370ROMAGIC) \
- || ((x) == U370WRMAGIC) \
- || ((x) == XA370ROMAGIC) \
- || ((x) == XA370WRMAGIC) \
- )
-
-
- #define RELOC_FILE "rel_u370aix.c"
-
- #define GETCWD
- /* the system defines a different getwd */
- #define getwd ourgetwd
-
- #ifdef IN_UNIXFSYS
- #endif
-
- #ifdef IN_NUM_CO
- #include <float.h>
- #define S3000
- #endif
- #undef IEEEFLOAT
-
-
- /* these two symbols are too long for the rt pl8cc compiler */
-
- #define check_type_or_pathname_string_symbol_stream check_type_or_path_or_strm
- #define check_type_or_Pathname_string_symbol check_type_or_path_sym
- #define TSor_pathname_string_symbol_stream TSor_path_string_sym_strm
- #define check_type_or_symbol_string_package check_type_or_sym_str_pack
- #define siLmake_string_output_stream_from_string siLma_str_from_string
- #define SYM_EXTERNAL_P(p) ((p)->n_sclass == C_EXT)
-
- #undef IF_ALLOCATE_ERR
-
-
- /* the u370 likes to allocate a little extra at startup
- via its own call to sbrk (not malloc)
- */
-
- char *sdebug;
- #define IF_ALLOCATE_ERR \
- if (core_end != sbrk(0))\
- {int ll; \
- if ((ll=(int)(sbrk(0) - core_end)) < PAGESIZE) \
- {sbrk(PAGESIZE - ll); \
- type_map[page(core_end)] = t_other; \
- core_end = sbrk(0); }\
- else \
- error("Someone allocated my memory!");} \
- if (core_end != (sdebug=sbrk(PAGESIZE*(n - m))))
-
-
-
- #define FIND_INIT \
- { if (*ptr==0 && (sym->n_scnum == TEXT_NSCN ) && sym->n_value ) \
- { char tem [9]; \
- char *str=SYM_NAME(sym); \
- dprintf(find init: %s ,str); \
- if (str[1]=='i' && str[2]=='n' && str[3]=='i' && str[4]== 't' \
- && str[5]=='_' && str[0]== '_' && str[strlen(str)-1] !='X') \
- *ptr= sym->n_value ; \
- else {/* printf("The first data symbol was not the init");*/} \
- }}
-
-
- /* The system sbrk is not quite right in that it skips some times.
- so we define one in rel_u370aix.c
- */
-
- #define sbrk sbrk1
- extern char * sbrk1();
-
- #define UNIXSAVE "saveu370.c"
-
- /* fool the metaware compiler bug. This should be removed
- when they fix it
- { SAFE_INC(big->c.c_car,l) ;
- if (big->c.c_car < 0) ..
- was branching incorrectly in case the two positives added to a negative
- */
- #define SAFE_INC(u,amt) do{volatile unsigned int xTmp = u; xTmp += amt; u = (int) xTmp;}while(0)
- #define SAFE_DEC(u,amt) do{volatile unsigned int xTmp = u; xTmp -= amt; u = (int) xTmp;}while(0)
-
- #define HAVE_XDR
-
-
- /* Begin for cmpinclude */
- /* #define HAVE_ALLOCA */
-
- /* End for cmpinclude */
-
-
-
-